package com.autism.thread.suo;

/**
 * 消费者：线程类
 * 设置线程任务：吃包子
 * 对包子状态进行判断
 *  false：没有包子，吃货调用wait方法进入等待
 *  true：有包子，吃货吃包子，吃完包子，把包子状态改为false，唤醒包子铺线程，生产包子
 * */
public class SuoJuanJuan extends Thread{
    private BaoZi baoZi;

    public SuoJuanJuan(BaoZi baoZi){
        this.baoZi = baoZi;
    }

    //设置线程：吃包子
    @Override
    public void run(){
        while(true){
            synchronized (baoZi){

                if(!baoZi.hasBaoZi){
                    try {
                        baoZi.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }

                //被唤醒后，吃包子
                System.out.println("索娟娟正在吃："+baoZi.pi+baoZi.xian+"包子");

                //修改状态
                baoZi.hasBaoZi = false;

                //唤醒包子铺线程，生产包子
                baoZi.notify();
                System.out.println("索娟娟已经把："+baoZi.pi+baoZi.xian+"包子吃完了，包子铺开始生产包子");
                System.out.println("-----------------------------------------------------------");
            }
        }
    }
}
